The JSR 289 Expert Group: SIP Servlet Specification version 1.1 allows session initiation protocol (SIP) signaling actions to be performed by applications, including acting as a user agent client, a user agent server, and a proxy. It supports an application composition model in which an initial SIP signaling request can be routed through a sequence of SIP servlet application components on a single visit to a SIP servlet container, based on one incoming request or outgoing response. Routing is handled by an application router component, taking the responsibility away from the servlet container. This model enables a larger application to be implemented by executing a declaratively-specified sequence of smaller SIP servlets.
In many cases, a SIP servlet may be associated with one or more corresponding pieces of hypertext transfer protocol (HTTP) application functionality, so that the application as a whole contains both SIP and HTTP servlets. For example, if call blocking, call forwarding, and voice mail are SIP servlets, each of these servlets may have a corresponding HTTP/web user interface that enables users or administrators to configure profiles and settings such as callers to block, call forwarding rules, voice mail greetings, etc. The voice mail SIP servlet may also be associated with HTTP-based application functionality that enables users to send and retrieve multimedia messages from a web page.
Currently, the application composition model in the JSR-289 specification works with SIP servlets only. Application composition functionality does not extend to HTTP servlets. As a result, implementers of multi-protocol applications have to handle the SIP and HTTP aspects separately. Typically, programmers deal with interactions between SIP and HTTP servlets by writing code on a case-by-case basis (e.g., putting HTTP code in SIP servlets, putting SIP code in HTTP servlets) in order to execute servlets in a particular order. Current solutions are highly inefficient without the ability to easily execute a sequence of multi-protocol servlets by specifying the sequence.